//Marcos - do not modify!
#define MAXCOURSES 100
#define MAXGRADEITEMS 20
#define MAXGRADES 20

//Structures - do not modify!
struct GradeItem
{
    char name[20];
    float percentage;
    float fullmark;
    float grades[MAXGRADES];
};
struct Course
{
    char code[10];
    char name[50];
    struct GradeItem gradeitems[MAXGRADEITEMS];
};

/*function entries*/
void EditCourse(struct Course *courses);
void EditGrade(struct Course *courses);
void ExpectedFinalGrade(struct Course *courses);
void ViewCourses(struct Course *courses);

/*functions for Edit Course*/
void AddCourse(struct Course *courses);
void DeleteCourse(struct Course *courses);
void DeleteAllCourses(struct Course *courses);
void ModifyCourse(struct Course *courses);
void ModifyCourseMenu(struct Course *course);

void ModifyCourseName(struct Course *course);
void ModifyItemName(struct Course *course);
void ModifyItemPercentage(struct Course *course);
void ModifyItemFullmark(struct Course *course);
void AddItemsWhenEmpty(struct Course *course);
void AddItems(struct Course *course);

/*functions for Edit Grade*/
void selectedCourse(struct Course *courses, int sel);
void editCourseGrade(struct Course *course, int gisel);

void addGrade(struct GradeItem *gradeitem);
void deleteGrade(struct Course *course, struct GradeItem *gradeitem, int gisel);
void deleteAllGrade(struct GradeItem *gradeitem);
void modifyGrade(struct Course *course, struct GradeItem *gradeitem, int gisel);

void displayHeader(struct Course course);
void displayFooter();
void displayGradeItem(struct GradeItem gradeitem, int no);
void displayEditGradeMenu();
int displayCourses(struct Course *courses);


/*functions for Expected Final Grade*/
//add your function prototypes here


/*functions for View Courses*/
//add your function prototypes here


/*Counting API*/
int getCourseNum(struct Course *courses);
int getGradeItemNum(struct Course course);
int getGradeNum(struct GradeItem gradeitem);